With the growth of "distributed" and "client-server" data processing architectures and applications, it becomes increasingly difficult to insure that messages between nodes are correctly identified and processed. Small changes in format, content, or message semantics are often experienced as new versions or releases of client processors, servers or peers (in a distributed system) are made available. The cataloging and managing of such changes on all clients and servers that are required to accommodate a new release is a difficult task, but one which must be done with absolute correctness to assure proper message interpretation.
In distributed systems, including client-server systems, messages are passed between processor-containing nodes through a communications network. Each of these messages is typically routed by a combination of hardware and software to a particular process that is to be executed on a particular node. Processes may cause further intermediate routing of a message, but eventually, the message arrives at its final destination. Upon arrival, the message is examined to determine the function which is to be performed at the node. Normally, a function code is embedded in the message and the code is used to determine the requested function. Other data in the message provides additional details of the function, parameters and data to be employed during the performance of the function.
Typically, function codes and parameters are encoded in application-specific form. Frequently, the encoding process arranges function codes in a fixed order and with a fixed offset from the beginning of a message. The meaning of the function codes and the interpretation of parameters is known only by the sending and receiving applications. As new releases of applications are prepared, encoding scheme used for the function codes may vary. Updating of sending and receiving applications thus can become a continuous and complex task - especially in widely distributed systems.
The prior art has attempted to cope with assuring correct message content identification by employing task and/or function identifiers which, when combined with accompanying operands, allow a destination system to correctly identify the required function to be performed. For instance, many computer systems communicate by transmission of messages comprising operation codes, followed by operands that are to be used during the performance of the operation defined by the operation code. The receiving processor analyzes the message and, by identifying the particular type of operation code in the message, knows the function to be performed on the operands accompanying the operation code. Due to the fact, however, that the number of operation codes are limited by the architecture of the communicating processors, only a limited number of operation codes can be implemented, are hardware fixed, and the system becomes inflexible as a result.
Recently, tags (or "tokens") have begun to be employed to identify objects, events, locations, etc. in distributed processing systems that are interconnected on a worldwide basis. Various approaches to the generation of tags have been suggested, however, in general, such approaches result in a limited population of tags. In U.S. patent application, Ser. No. 07/963,885, now U.S. Pat. No. 5,414,841, to Bingham (assigned to the same assignee as this application), an architecture and general purpose algorithm for the generation of unique tags is disclosed that is infinitely extensible, supports parallel assignments from an arbitrary large number of servers, and assures that uniqueness is maintained. The Bingham et al. architecture requires no fixed length fields and thus provides a virtually boundless tag domain.
The tag structure described by Bingham et al. includes a sequence of concatenated fields, the first field being a delimiter field that includes a delimiter character such as a "&lt;" to serve as an initial indicator of the beginning of a tag. A tag version field follows the delimiter field and identifies a unique tag version and is generally a numeric field. A value field follows the version field and includes a string of characters that is unique for a given tag version and thus provides the unique identification for each tag. Both the string of characters in the version field and in the variable field are virtually unlimited in size.
In U.S. application Ser. No. 08/174,689, still pending as of issue of this application, (Attorney docket SA9-93-053) entitled "Tag Server System and Method that Assure Available of Globally Unique Tag Values", by Dockter et al., a tag server system is described which provides unique tag values to requesting client systems. The tag server system includes a processor which generates an inventory of unique tag values, such values being generated by monotonically increasing a value within the tag value field. Those generated values are stored, a non-volatile memory stores the highest unique tag value generated by the processor. Should tag values be lost as a result of a data loss failure mode, the highest unique tag value is accessed from the non-volatile memory and the processor in the tag server commences generation of new unique tag values monotonically from the accessed value and expends no effort to regenerate lost unique tag value. In this manner, uniqueness of tag values is continuously assured (although not their sequential state).
Accordingly, it is an object of this invention to employ globally unique tag values to enable more efficient communications in distributed data processing architectures.
It is another object of this invention to employ globally unique tag values as identifiers for communications messages, such that a destination node is capable, by recognition of the unique tag value to correctly analyze a received message.
It is yet another object of this invention to provide an improved communications interface between data processing nodes, wherein destination nodes and source nodes both contain a library of unique tag values and associated grammar templates to enable decoding of received messages, whereby receipt of a unique tag value immediately enables accessing of an associated grammar template.
It is still another object of this invention to provide a communications interface data protocol which enables complex message structures to be identified by accompanying unique tag values.